package com.xinsoft.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xinsoft.entity.dto.SysDocumentNumPageParam;
import com.xinsoft.entity.po.SysDocumentNum;
import com.xinsoft.entity.vo.SysDocumentNumVo;

import java.util.List;

/**
* @author hsm
* @description 针对表【sys_document_num(单据流水号)】的数据库操作Service
* @createDate 2023-06-05 16:06:51
*/
public interface SysDocumentNumService extends IService<SysDocumentNum> {

    /**
     * 新增
     * @param sysDocumentNum
     * @return
     */
    SysDocumentNum addDocumentNum(SysDocumentNum sysDocumentNum);

    /**
     * 编辑
     * @param sysDocumentNum
     * @return
     */
    SysDocumentNum editDocumentNum(SysDocumentNum sysDocumentNum);

    /**
     * 分页列表
     * @param param
     * @return
     */
    IPage<SysDocumentNumVo> findPageListByParam(SysDocumentNumPageParam param);

    /**
     * 不分页列表
     * @param param
     * @return
     */
    List<SysDocumentNumVo> findListByParam(SysDocumentNumPageParam param);

    /**
     * 删除
     * @param ids
     * @return
     */
    void del(List<Integer> ids);

    /**
     * 启用
     * @param ids
     * @return
     */
    void enable(List<Integer> ids);

    /**
     * 禁用
     * @param ids
     * @return
     */
    void disable(List<Integer> ids);

    /**
     * 根据id获取详情
     * @param id
     * @return
     */
    SysDocumentNum getSysDocumentNum(Integer id);

    /**
     * 根据单据类型生成单据编号
     * @param documentId
     * @return
     */
    String getSysDocumentNumByDocumentId(Integer documentId);

    /**
     * 根据单据类型递增LastSerial
     * @param documentId
     * void
     */
    void incrementLastSerialByDocumentId(Integer documentId);

    /**
     * 生成派工单编码
     * @param sysDocumentNum
     * @return
     */
    String generatorDispatchCodeCode(SysDocumentNum sysDocumentNum);
}
